(deftemplate foaieMatricola
    (slot medieInformatica)
    (slot medieMatematica)
    (slot medieFizica)
    (slot medieEconomie)
    (slot medieRomana)
    (slot medieEngleza)
    (slot medieIstorie)
    (slot medieGeografie)
    (slot medieSport)
    (slot medieBiologie)
    (slot medieFilosofie)
    (slot mediePsihologie)
)

(deftemplate intrebare
	(slot raspuns) 
)

(assert (intrebare(raspuns nil)))

(defrule intrebare 
    (intrebare 
        (raspuns nil)
    )
    
    =>
    
    (printout t "Ce tip de facultate preferati? (reala, umana, sportiva, nuStiu )" crlf)
    (bind ?r (read))
    (assert (intrebare (raspuns ?r)))
)

(defrule real
    (intrebare 
        (raspuns reala)
    )
    
	=>
    
    (printout t "Introduceti MEDIA la disciplina INFORMATICA:" crlf)
    (bind ?minf (read))
    
    (printout t "Introduceti MEDIA la disciplina MATEMATICA:" crlf)
    (bind ?mmat (read))
    
    (printout t "Introduceti MEDIA la disciplina FIZICA:" crlf)
    (bind ?mfiz (read))
    
    (printout t "Introduceti MEDIA la disciplina ECONOMOIE:" crlf)
    (bind ?meco (read))
    
    (printout t "Introduceti MEDIA la disciplina BIOLOGIE:" crlf)
    (bind ?mbio (read))
    
    (assert 
        (foaieMatricola
            (medieInformatica ?minf)
        	(medieMatematica ?mmat)
    		(medieFizica ?mfiz)
    		(medieEconomie ?meco)
            (medieBiologie ?mbio)    
        )   
    )    
)

(defrule uman
    (intrebare 
        (raspuns umana)
    )
    
	=>
    
    (printout t "Introduceti MEDIA la disciplina LIMBA SI LITERATURA ROMANA:" crlf)
    (bind ?mrom (read))
    
    (printout t "Introduceti MEDIA la disciplina ENGLEZA:" crlf)
    (bind ?meng (read))
    
    (printout t "Introduceti MEDIA la disciplina ISTORIE:" crlf)
    (bind ?mist (read))
    
    (printout t "Introduceti MEDIA la disciplina GEOGRAFIE:" crlf)
    (bind ?mgeo (read))
    
    (printout t "Introduceti MEDIA la disciplina FILOSOFIE:" crlf)
    (bind ?mfil (read))
    
    (printout t "Introduceti MEDIA la disciplina PSIHOLOGIE:" crlf)
    (bind ?mpsi (read))  
     
    (assert
    	(foaieMatricola
            (medieRomana ?mrom)
        	(medieEngleza ?meng)
    		(medieIstorie ?mist)
    		(medieGeografie ?mgeo)
    		(medieFilosofie ?mfilo)
    		(mediePsihologie ?mpsi)    
        )    
    ) 
)

(defrule sportiva
    (intrebare (raspuns sportiva))
    
	=>
    
    (printout t "Introduceti MEDIA la disciplina SPORT:" crlf)
    (bind ?mspo (read))
    
    (printout t "Introduceti MEDIA la disciplina BIOLOGIE:" crlf)
    (bind ?mbio (read))
    
    (assert
    	(foaieMatricola
       		(medieSport ?mspo)
    		(medieBiologie ?mbio)
       	)    
    )
      
)

(defrule nuStiu
    (intrebare 
        (raspuns nuStiu)
    )
    
    =>
    
	(printout t "Introduceti MEDIA la disciplina INFORMATICA:" crlf)
    (bind ?minf (read))
    
    (printout t "Introduceti MEDIA la disciplina MATEMATICA:" crlf)
    (bind ?mmat (read))
    
    (printout t "Introduceti MEDIA la disciplina FIZICA:" crlf)
    (bind ?mfiz (read))
    
    (printout t "Introduceti MEDIA la disciplina ECONOMOIE:" crlf)
    (bind ?meco (read))
    
    (printout t "Introduceti MEDIA la disciplina LIMBA SI LITERATURA ROMANA:" crlf)
    (bind ?mrom (read))
    
    (printout t "Introduceti MEDIA la disciplina ENGLEZA:" crlf)
    (bind ?meng (read))
    
    (printout t "Introduceti MEDIA la disciplina ISTORIE:" crlf)
    (bind ?mist (read))
    
    (printout t "Introduceti MEDIA la disciplina GEOGRAFIE:" crlf)
    (bind ?mgeo (read))
    
    (printout t "Introduceti MEDIA la disciplina SPORT:" crlf)
    (bind ?mspo (read))
    
    (printout t "Introduceti MEDIA la disciplina BIOLOGIE:" crlf)
    (bind ?mbio (read))
    
    (printout t "Introduceti MEDIA la disciplina FILOSOFIE:" crlf)
    (bind ?mfil (read))
    
    (printout t "Introduceti MEDIA la disciplina PSIHOLOGIE:" crlf)
    (bind ?mpsi (read))
    
    (assert
    	(foaieMatricola
            (medieInformatica ?minf)
        	(medieMatematica ?mmat)
    		(medieFizica ?mfiz)
    		(medieEconomie ?meco)
    		(medieRomana ?mrom)
    		(medieEngleza ?meng)
    		(medieIstorie ?mist)
    		(medieGeografie ?mgeo)
    		(medieSport ?mspo)
    		(medieBiologie ?mbio)
    		(medieFilosofie ?mfil)
    		(mediePsihologie ?mpsi)    
        )    
    )
)

(defrule MatematicaInformaticaVest
    (declare (salience -1))
	?id2 <- (intrebare (raspuns reala | nuStiu))
    
    ?id <-	(foaieMatricola
        		(medieInformatica ?minf & ~nil & :(> ?minf 8.00))
    			(medieMatematica ?mmat & ~nil & :(> ?mmat 7.50))  
    		)
    
    =>
    
    (printout t "Va recomandam FACULTATEA DE MATEMATICA SI INFORMATICA din cadrul UNIVERSITATII DE VEST DIN TIMISOARA !" crlf)
	(retract ?id ?id2)
)

(defrule MatematicaInformaticaPoli
    (declare (salience 0))
    ?id2 <- (intrebare (raspuns reala | nuStiu))
    
    ?id <- 	(foaieMatricola
        		(medieInformatica ?minf & ~nil & :(> ?minf 8.50))
    			(medieMatematica ?mmat & ~nil & :(> ?mmat 8.00))
        		(medieFizica ?mfiz & ~nil & :(> ?mfiz 7.50))  
    	  	)
    
    =>
    
    (printout t "Va recomandam FACULTATEA DE AUTOMATICA SI CALCULATOARE din cadrul UNIVERSITATII POLITEHNICA DIN TIMISOARA !" crlf)
	(retract ?id ?id2)
)

(defrule LitereVest
	(declare (salience -2))
    
   	(and 
        ?id2 <- (intrebare (raspuns umana | nuStiu))
    
  		?id <- 	(foaieMatricola
        			(medieRomana ?mrom & ~nil)
        			(medieEngleza ?meng & ~nil)
  				)
    )
    
    (test (and (> ?mrom 8.50) (> ?meng 8.50)))
    
    =>
    
    (printout t "Va recomandam FACULTATEA DE LITERE din cadrul  UNIVERSITATII DE VEST DIN TIMISOARA !" crlf)
    (retract ?id ?id2)
)

(defrule IstorieVest
	(declare (salience -2))
    
   	(and 
        ?id2 <-(intrebare (raspuns umana | nuStiu))
    
  		?id <- 	(foaieMatricola
        			(medieIstorie ?mist & ~nil)
        			(medieGeografie ?mgeo & ~nil)
  				)
    )
    
    (test (and (> ?mist 9.00) (> ?mgeo 7.50)))
    
    =>
    
    (printout t "Va recomandam FACULTATEA DE GEOGRAFIE din cadrul  UNIVERSITATII DE VEST DIN TIMISOARA !" crlf)
    (retract ?id ?id2)
)

(defrule EducatieFizicaeVest
	(declare (salience -3))
    ?id2 <-(intrebare (raspuns sportiva | nuStiu))
    
  	?id <- 	(foaieMatricola
        		(medieSport ?mspo & ~nil)
        		(medieBiologie ?mbio & ~nil)
  			)
    
    (test (and (> ?mspo 8.50) (> ?mbio 8.50)))
    
    =>
    
    (printout t "Va recomandam FACULTATEA DE EDUCATIE FIZICA SI SPORT din cadrul  UNIVERSITATII DE VEST DIN TIMISOARA !" crlf)
    (retract ?id ?id2)
)

(defrule raspunsGresit
    (declare (salience -4))
    (intrebare (raspuns ~reala & ~umana & ~sportiva & ~nuStiu & ~nil))
    
	=>
    
    (printout t "Nu ati indicat corect tipul facultatii!" crlf)
)


(defrule faraFacultate
    (declare (salience -5))
    (intrebare (raspuns reala | umana | sportiva | nuStiu))
    
	=>
    
    (printout t "Nu sunt facultati pe care sa le recomandam!" crlf)
)

(run)
